package com.example.carrealtimepublisher.controller;


import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.example.carrealtimepublisher.bean.AverageSpeed;
import com.example.carrealtimepublisher.service.AverageSpeedService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController // 返回 JSON 数据，标识为接口控制器
@RequestMapping ("/average") //接口同一前缀
public class AverageController {

    @Autowired
    private AverageSpeedService averageSpeedService;

    //定义接口：供 Sugar 大屏调用，返回 Doris 表数据
    @GetMapping ("/speed")
    public JSONObject queryAverageSpeed() {
        // 1. 1. 查询数据源：从Service获取AverageSpeed列表
        List<AverageSpeed> averageSpeeds = averageSpeedService.queryAverageSpeed();

        // 2. 构建最外层JSON对象（status + msg + data）
        JSONObject rootJson = new JSONObject();
        rootJson.put("status", 0);
        rootJson.put("msg", "");
        // 3. 构建data对象（包含columns和rows）
        JSONObject dataJson = new JSONObject();
        JSONArray columnsArray = new JSONArray();
        // 列1：分组织
        JSONObject col1 = new JSONObject();
        col1.put("name", "监控ID");
        columnsArray.add(col1);

        // 列2：部门
        JSONObject col2 = new JSONObject();
        col2.put("name", "平均速度");
        columnsArray.add(col2);

        // 列3：业务组
        JSONObject col3 = new JSONObject();
        col3.put("name", "车辆数");
        columnsArray.add(col3);
        dataJson.put("columns",columnsArray);

//        // 3.2 构建行数据（rows）：循环AverageSpeed列表，映射为JSON行
        JSONArray rowsArray = new JSONArray();
        for (AverageSpeed speed : averageSpeeds) {
            JSONObject rowJson = new JSONObject();
            rowJson.put("MonitorId",speed.getMonitorId());
            rowJson.put("AvgSpeed", speed.getAvgSpeed());
            rowJson.put("CarCount", speed.getCarCount());
            rowsArray.add(rowJson);
        }

//       将当前行加入rows数组
        dataJson.put("rows",rowsArray);
        rootJson.put("data", dataJson);

        // 5. 返回JSON字符串（若需JSONObject，直接返回rootJson即可）
        return rootJson;
    }

}
